package aceim.app.dataentity; import aceim.api.dataentity.ProtocolServiceFeature; import aceim.api.utils.Logger; import aceim.app.service.ProtocolService; import android.content.res.Resources; import android.os.Parcel; import android.os.Parcelable; public class ProtocolResources extends PluginResources { private String protocolServiceName; private String protocolName; private String protocolVersion; private String apiVersion; private ProtocolServiceFeature[] mFeatures; public ProtocolResources(ProtocolService service) { super(service.getProtocolServicePackageName(), null); fillResources(service); } private void fillResources(ProtocolService service) { try { Resources r = getNativeResourcesForProtocol(service.getContext().getPackageManager()); mFeatures = service.getProtocol().getProtocolFeatures(); protocolName = service.getProtocol().getProtocolName(); this.protocolServiceName = r.getString(service.getServiceInfo().applicationInfo.labelRes); } catch (Exception e) { Logger.log(e); this.protocolServiceName = service.getServiceClassName(); } } public ProtocolResources(Parcel in) { super(in); this.protocolName = in.readString(); this.protocolServiceName = in.readString(); this.protocolVersion = in.readString(); this.apiVersion = in.readString(); Parcelable[] p = in.readParcelableArray(ProtocolServiceFeature.class.getClassLoader()); if (p == null) { p = new Parcelable[0]; } this.mFeatures = new ProtocolServiceFeature[p.length]; for (int i=0; i<p.length; i++) { this.mFeatures[i] = (ProtocolServiceFeature) p[i]; } } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeString(protocolName); dest.writeString(protocolServiceName); dest.writeString(protocolVersion); dest.writeString(apiVersion); dest.writeParcelableArray(mFeatures, flags); } public static final Parcelable.Creator<ProtocolResources> CREATOR = new Parcelable.Creator<ProtocolResources>() { public ProtocolResources createFromParcel(Parcel in) { in.readString(); return new ProtocolResources(in); } public ProtocolResources[] newArray(int size) { return new ProtocolResources[size]; } }; public int getProtocolServiceIconId() { return 0; } /** * @return the protocolName */ public String getProtocolName() { return protocolName; } @Override public String toString() { return protocolServiceName; } public ProtocolServiceFeature[] getFeatures() { return mFeatures; } public ProtocolServiceFeature getFeature(String featureId){ if (mFeatures == null || mFeatures.length < 1 || featureId == null) { return null; } for (ProtocolServiceFeature feature : mFeatures) { if (feature.getFeatureId().equals(featureId)) { return feature; } } return null; } public ProtocolServiceFeature getFeature(int featureIdHash) { if (mFeatures == null || mFeatures.length < 1 || featureIdHash == 0) { return null; } for (ProtocolServiceFeature feature : mFeatures) { if (feature.getFeatureId().hashCode() == featureIdHash) { return feature; } } return null; } /** * @return the protocolVersion */ public String getProtocolVersion() { return protocolVersion; } /** * @param protocolVersion the protocolVersion to set */ public void setProtocolVersion(String protocolVersion) { this.protocolVersion = protocolVersion; } /** * @return the apiVersion */ public String getApiVersion() { return apiVersion; } /** * @param apiVersion the apiVersion to set */ public void setApiVersion(String apiVersion) { this.apiVersion = apiVersion; } }